home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
iBrowse Update Disc
/
iBrowse Update Disc.iso
/
distrib
/
man
/
Manuals
/
Omniclient
/
6_filemap
< prev
next >
Wrap
Text File
|
1998-02-26
|
21KB
|
509 lines
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<TITLE> NFS file mapping</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.04z">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<P>
<A HREF="5_Internet"><IMG SRC="pics/PREV.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<A HREF="Front"><IMG SRC="pics/FRONT.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<A HREF="TOC"><IMG SRC="pics/CONTS.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<A HREF="index"><IMG SRC="pics/INDEX.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<A HREF="7_AppxA"><IMG SRC="pics/NEXT.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<P>
<H1>6 NFS file <A NAME="map">map</A>ping</H1>
<HR>
<P>
There are a number of differences between the UNIX and RISC OS
models of a filing system, the more important being:
<UL>
<LI>length of filenames
<LI>use of special characters in filenames
<LI>numbers of attribute bits stored with files
<LI>meaning of attribute bits
<LI>use of file types
<LI>soft links.
</UL>
<P>
Because of these clashes changes have to be made when mapping
RISC OS file names and attributes to UNIX ones, and vice versa.
Generally the changes made when mapping one way are reversed when
mapping the other way, so the system is as transparent as possible
if only viewed from RISC OS. If you view the files using the remote
filestore though, you'll notice some differences.
<P>
This chapter outlines how the mapping of file names takes place,
and what differences you'll notice between the RISC OS view of
a file and the UNIX view.
<H2><A NAME="NFS">NFS</A> - its file mapping from RISC OS to UNIX
</H2>
<P>
This section describes how RISC OS NFS maps files from RISC OS
to UNIX.
<H3>Filenames</H3>
<P>
<B>Character translation</B>
<P>
The first change RISC OS NFS makes to a filename is to translate
the character `/' (the UNIX directory separator) to `.', for example:
<P>
<TABLE >
<TR><TD WIDTH=151><B>RISC OS name</B></TD><TD WIDTH=180><B>UNIX name</B>
</TD></TR>
<TR><TD WIDTH=151>fred/c</TD><TD WIDTH=180>fred.c</TD></TR>
<TR><TD WIDTH=151>/profile</TD><TD WIDTH=180>.profile</TD></TR>
</TABLE>
<P>
<B>File type extensions</B>
<P>
RISC OS NFS then adds a filename extension to store the RISC OS
file type.
<P>
You can set the extension used for any given file type to one
of your choice. To do so you must edit the extensions file, held
within the Internet application. See the section <A HREF="#extensions">Editing the extensions file</A>.
<P>
If you haven't set up a filename extension for a given file type,
then a default extension gets used instead. The default mapping
of a RISC OS file called Fred is as follows:<BR>
<P>
<TABLE >
<TR><TD WIDTH=189><B>RISC OS type</B></TD><TD WIDTH=251><B>UNIX name</B>
</TD><TD WIDTH=263><B>Notes</B></TD></TR>
<TR><TD WIDTH=189>Text</TD><TD WIDTH=251>Fred</TD><TD WIDTH=263>
</TD></TR>
<TR><TD WIDTH=189>UNIX Ex</TD><TD WIDTH=251>Fred</TD><TD WIDTH=263>
</TD></TR>
<TR><TD WIDTH=189>Draw (&AFF)</TD><TD WIDTH=251>Fred,aff</TD>
<TD WIDTH=263></TD></TR>
<TR><TD WIDTH=189>Obey (&FEB)</TD><TD WIDTH=251>Fred,feb</TD>
<TD WIDTH=263>and other file types similarly </TD></TR>
<TR><TD WIDTH=189>dead </TD><TD WIDTH=251>Fred,xxx</TD>
<TD WIDTH=263></TD></TR>
<TR><TD WIDTH=189>untyped</TD><TD WIDTH=251>Fred,lxa</TD><TD WIDTH=263>
</TD></TR>
<TR><TD WIDTH=189>directory</TD><TD WIDTH=251>Fred</TD><TD WIDTH=263>
</TD></TR>
</TABLE>
<P>
A dead file is one that has been created but the contents
of which are being updated. For example when NetFS copies a file
to a file server it reserves space by creating a dead file before
writing to it.
<H3>File contents</H3>
<P>
The contents of files are unchanged when transferring to UNIX,
save for untyped files. These have their load and execute addresses
appended to the file, making it 8 bytes longer:
<P>
<TABLE BORDER="1">
<TR><TD WIDTH=243><CENTER> normal contents</CENTER></TD>
<TD WIDTH=43><CENTER>L0</CENTER></TD><TD WIDTH=43><CENTER>L1</CENTER>
</TD><TD WIDTH=43><CENTER>L2</CENTER></TD><TD WIDTH=43><CENTER>L3</CENTER>
</TD><TD WIDTH=43><CENTER>E0</CENTER></TD><TD WIDTH=43><CENTER>E1</CENTER>
</TD><TD WIDTH=43><CENTER>E2</CENTER></TD><TD WIDTH=43><CENTER>E3</CENTER>
</TD></TR>
</TABLE>
<P>
The RISC OS file ended before L0, while the UNIX file ended after
E3
<P>
L0 is the least significant byte of the load address, L3 the most
significant. Bytes E0 to E3 are the execute address.
<H3><A NAME="Access">Access</A> attributes</H3>
<P>
<B>When creating a new file or directory</B>
<P>
You can use the system variable NFS$<A NAME="Create">Create</A>Access
to define the default read/write access attributes for user, group
and other that RISC OS NFS sets when creating a file or directory
on UNIX. This variable uses six of its lowest nine bits:
<P>
<TABLE BORDER="1">
<TR><TD COLSPAN=3 WIDTH=198><CENTER><B>User</B></CENTER></TD>
<TD COLSPAN=3 WIDTH=198><CENTER><B>Group</B></CENTER></TD><TD COLSPAN=3 WIDTH=198><CENTER><B>Other</B></CENTER>
</TD></TR>
<TR><TD WIDTH=66><CENTER>r</CENTER></TD><TD WIDTH=66><CENTER>w</CENTER>
</TD><TD WIDTH=66><CENTER>-</CENTER></TD><TD WIDTH=66><CENTER>r</CENTER>
</TD><TD WIDTH=66><CENTER>w</CENTER></TD><TD WIDTH=66><CENTER>-</CENTER>
</TD><TD WIDTH=66><CENTER>r</CENTER></TD><TD WIDTH=66><CENTER>w</CENTER>
</TD><TD WIDTH=66><CENTER>-</CENTER></TD></TR>
</TABLE>
<P>
You can set it in octal by using a leading `0' (you'll find this
familiar if you've ever used the UNIX chmod command with numbers),
or in hexadecimal by using a leading `0x', or in decimal by just
using a number. So the following would all set the variable to
specify user read/write access, group read only access, and no
access to others:
<P>
<TT><FONT FACE="Courier">*Set NFS$CreateAccess 0640 </FONT>(using
octal)</TT>
<P>
<TT><FONT FACE="Courier">*Set NFS$CreateAccess 0x1A0 </FONT>(using
hexadecimal)</TT>
<P>
<TT><FONT FACE="Courier">*Set NFS$CreateAccess 416 </FONT>(using
decimal)</TT>
<P>
You can override the value of the NFS$CreateAccess variable for
a specific mount by setting a system variable <TT><FONT FACE="Courier">NFS$CreateAccess_mountname</FONT></TT> .
<P>
You should set these access variables in a boot file; see your
RISC OS 3 User Guide if you need help on this.
<P>
If a relevant access variable exists then files and directories
are created with the read/write access it specifies. Files of
type UNIX Ex also have their execute attributes set to be the
same as the corresponding read bits in the variable.
<P>
If no relevant access variable exists then files are created with
user read/write access, and with user execute permission if the
files' type is UNIX Ex. Directories are created with user read,
write and execute permission.
<P>
<B>When mapped from RISC OS</B>
<P>
When RISC OS NFS sets the access to a UNIX file using RISC OS
attributes they are mapped as follows:
<P>
<TABLE >
<TR><TD WIDTH=161><B>RISC OS bit</B></TD><TD WIDTH=409><B>UNIX bit</B>
</TD></TR>
<TR><TD WIDTH=161>owner read</TD><TD WIDTH=409>user read <BR>
user execute is also set if owner read is set and the file's type is UNIX Ex
</TD></TR>
<TR><TD WIDTH=161>owner write</TD><TD WIDTH=409>user write</TD>
</TR>
<TR><TD WIDTH=161>public read</TD><TD WIDTH=409>group read and other read <BR>
group execute and other execute are also both set if public read is set and the file's type is UNIX Ex.
</TD></TR>
<TR><TD WIDTH=161>public write</TD><TD WIDTH=409>group write and other write
</TD></TR>
<TR><TD WIDTH=161>locked</TD><TD WIDTH=409>(discarded)</TD></TR>
</TABLE>
<P>
<BR>
<P>
Similarly, when RISC OS NFS sets the access to a UNIX directory
using RISC OS attributes they are mapped as follows:
<P>
<TABLE >
<TR><TD WIDTH=161><B>RISC OS bit</B></TD><TD WIDTH=408><B>UNIX bit</B>
</TD></TR>
<TR><TD WIDTH=161>owner read</TD><TD WIDTH=408>ignored - i.e. user read is left unchanged
</TD></TR>
<TR><TD WIDTH=161>owner write</TD><TD WIDTH=408>ignored - i.e. user write is left unchanged <BR>
user execute is always set
</TD></TR>
<TR><TD WIDTH=161>public read</TD><TD WIDTH=408>group read and other read
</TD></TR>
<TR><TD WIDTH=161>public write</TD><TD WIDTH=408>group write and other read
</TD></TR>
<TR><TD WIDTH=161>locked</TD><TD WIDTH=408>NOT group execute and NOT other execute
</TD></TR>
</TABLE>
<H3><A NAME="Dates">Dates</A></H3>
<P>
UNIX date stamps any files just as usual if you use RISC OS NFS
to create or amend them.
<H3><A NAME="Find">Find</A>ing an object</H3>
<P>
When RISC OS NFS is finding an object it searches in this order,
using the first match it makes:
<OL>
<LI>It searches for an exact name match.
<LI>It searches for an exact name match after any RISC OS specific
extension has first been removed.
<LI>It searches for a name match ignoring case, after any RISC
OS specific extension has first been removed.
</OL>
<H2>NFS - its file mapping from <A NAME="UNIX">UNIX</A> to RISC
OS</H2>
<P>
This section describes how RISC OS NFS maps files from UNIX to
RISC OS.
<H3>Filenames</H3>
<P>
<B>File type <A NAME="untyped"><B>extensions</B></A></B>
<P>
The first change RISC OS NFS makes is to remove any filename extension
used to store the RISC OS file type.
<P>
It starts by looking through the extensions file to see if the
filename has an extension that matches one you specified; if so,
the extension gets removed. You can in fact set up a different
mapping for each direction of file transfer, so you can map many
UNIX file extensions to single RISC OS file types. See the section
<A HREF="#extensions">Editing the extensions file</A>.
<P>
If RISC OS NFS can't find a matching filename extension in the
extensions file it then tries to remove any of its own default
extensions; so the following all appear as Fred under RISC OS:
<P>
<TABLE >
<TR><TD WIDTH=161><B>UNIX name</B></TD><TD WIDTH=408><B>Notes</B>
</TD></TR>
<TR><TD WIDTH=161>Fred</TD><TD WIDTH=408></TD></TR>
<TR><TD WIDTH=161>Fred,hhh</TD><TD WIDTH=408>hhh is 3 lower-case hex digits
</TD></TR>
<TR><TD WIDTH=161>Fred,xxx</TD><TD WIDTH=408></TD></TR>
<TR><TD WIDTH=161>Fred,lxa</TD><TD WIDTH=408></TD></TR>
</TABLE>
<P>
<B>Truncation</B>
<P>
The next thing RISC OS NFS does to a filename is to truncate it
to the length set by the system variable NFS$<A NAME="Trun">Trun</A>cateLength.
By default this is set to the value 10 - the same length as the
maximum that the desktop Filers can handle. It only gets read
once, when the NFS module is loaded.
<P>
If you want a different truncate length use the *Set command,
say in a boot file:
<P>
<TT><FONT FACE="Courier">*Set NFS$TruncateLength 12</FONT></TT>
<P>
If you're using NFS from the command line you may want to override
filename truncation. To do so set the variable to a large number,
e.g. 1000000.
<H3>Character translation</H3>
<P>
The final change RISC OS NFS makes to a filename is to translate
the character `.' (the Acorn directory separator) to `/', for
example:
<P>
<TABLE >
<TR><TD WIDTH=161><B>UNIX name</B></TD><TD WIDTH=408><B>RISC OS name</B>
</TD></TR>
<TR><TD WIDTH=161>fred.c</TD><TD WIDTH=408>fred/c</TD></TR>
<TR><TD WIDTH=161>.profile</TD><TD WIDTH=408>/profile</TD></TR>
</TABLE>
<H3>File <A NAME="contents">contents</A></H3>
<P>
RISC OS NFS makes the last 8 bytes of any file with a `,lxa' extension
invisible; this is to hide the load and execute addresses it presumes
itself to have appended.
<P>
If you generate a file in UNIX with a `,lxa' extension which is
less than 8 bytes long, you will get unpredictable behaviour if
you try to manipulate it from RISC OS.
<H3>Access attributes</H3>
<P>
When the access attributes of a UNIX file or directory get translated
by RISC OS NFS they are mapped as follows:
<P>
<TABLE >
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161><B>UNIX bit</B></TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408><B>RISC OS bit</B>
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>user read</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>owner read
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>user write</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>owner write
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>user execute</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>(discarded)
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>group read</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>(discarded)
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>group write</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>(discarded)
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>group execute</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>(discarded)
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>other read</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>public read
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>other write</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>public write
</TD></TR>
<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=161>other execute</TD><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=408>(discarded for files)
<BR>
NOT locked for directories
</TD></TR>
</TABLE>
<H3>Dates</H3>
<P>
RISC OS NFS always uses the UNIX last modified date stamp to map
to a RISC OS date stamp. It assumes the UNIX date stamp to be
in GMT, and uses the value set by *TimeOffset to convert this
to local time. See <A HREF="8_AppxB#time">*TimeOffset</A>.
<H3>File <A NAME="types">types</A></H3>
<P>
RISC OS NFS resolves file types by looking for any filename extension
used to store the RISC OS file type. It does so at the same time
as it resolves filenames - see also the earlier <A HREF="#filenames">Filenames </A>section.
<P>
It starts by looking through the extensions file to see if the
filename has an extension that matches one you specified; if so,
it sets the file to the corresponding file type. See the section
<A HREF="#extensions">Editing the extensions file</A>.
<P>
If RISC OS NFS can't find a matching filename extension in the
extensions file it then sets the file type using its default file
extensions. So, again taking the example of a file that will be
displayed as Fred:<BR>
<P>
<TABLE >
<TR><TD WIDTH=151><B>UNIX name</B></TD><TD WIDTH=236><B>Notes</B>
</TD><TD WIDTH=171><B>RISC OS type</B></TD></TR>
<TR><TD WIDTH=151>Fred</TD><TD WIDTH=236>UNIX directory</TD><TD WIDTH=171>Directory
</TD></TR>
<TR><TD WIDTH=151>Fred</TD><TD WIDTH=236>no execute bit is set
</TD><TD WIDTH=171>Text</TD></TR>
<TR><TD WIDTH=151>Fred</TD><TD WIDTH=236>any execute bit is set
</TD><TD WIDTH=171>UNIX Ex</TD></TR>
<TR><TD WIDTH=151>Fred,hhh</TD><TD WIDTH=236>hhh is 3 lower case hex digits
</TD><TD WIDTH=171>&hhh</TD></TR>
<TR><TD WIDTH=151>Fred,xxx</TD><TD WIDTH=236></TD><TD WIDTH=171><A NAME="dead">dead</A>
</TD></TR>
<TR><TD WIDTH=151>Fred,lxa</TD><TD WIDTH=236></TD><TD WIDTH=171>none, undated
</TD></TR>
</TABLE>
<P>
See also the section <A HREF="#soft">Soft links</A>.
<H3>Load and execute addresses</H3>
<P>
If a UNIX file has the extension `,lxa' then RISC OS NFS assumes
it to be a RISC OS untyped file that it created on UNIX. It uses
the last 8 bytes of the file to give the load and execute addresses.
So if they were:
<P>
<TABLE BORDER=1>
<TR><TD WIDTH=243><CENTER> normal contents</CENTER></TD>
<TD WIDTH=43><CENTER>67</CENTER></TD><TD WIDTH=43><CENTER>45</CENTER>
</TD><TD WIDTH=43><CENTER>23</CENTER></TD><TD WIDTH=43><CENTER>01</CENTER>
</TD><TD WIDTH=43><CENTER>EF</CENTER></TD><TD WIDTH=43><CENTER>CD</CENTER>
</TD><TD WIDTH=43><CENTER>AB</CENTER></TD><TD WIDTH=43><CENTER>89</CENTER>
</TD></TR>
</TABLE>
<P>
(The RISC OS file ends before 67, while the UNIX file ends after
89.)
<P>
the load address would be &01234567, and the execute address
would be &89ABCDEF.
<H3><A NAME="soft">Soft</A> links</H3>
<P>
RISC OS NFS resolves soft links up to eight times
- that is, whilst following a soft link, it only allows eight
soft links to be traversed. If this traversal reaches an existing
object other than a soft link:
<UL>
<LI>the object's UNIX attributes and contents get used
<LI>the soft link's UNIX name gets used to determine the RISC
OS file type.
</UL>
<P>
In other words soft links behave transparently except that, where
there is more than one soft link to a file, its type may differ
depending on which soft link you use to view it.
<P>
RISC OS NFS can't traverse a soft link that leaves a mount. If
a UNIX link name starts with the character `/' then RISC OS NFS
treats it as the root of its mount. Consequently absolute soft
links will only work if you've mounted the UNIX root directory
`/' and if the soft link does not leave the root filing system.
For example, if you had mounted /usr then this UNIX soft link
in the /usr directory would be traversed:
<P>
<TT><FONT FACE="Courier">lrwxrwxrwx 1 root wheel 11 Feb 23 17:19
man -> ./share/man</FONT></TT>
<P>
whereas this one wouldn't be:
<P>
<TT><FONT FACE="Courier">lrwxrwxrwx 1 root wheel 11 Feb 23 17:19
man -> /usr/share/man</FONT></TT>
<P>
We advise that when you make soft links on UNIX you always make
relative links (i.e. start them with `.' or `..') rather than
absolute ones.
<P>
If a soft link does not resolve to an existing non-soft-link object
within eight expansions it's displayed as a file with type `SoftLink'
(&FDC). You can't do anything from RISC OS with one of these
dead soft links.
<H3>Other object types</H3>
<P>
Block and character special files and named sockets are displayed
as UNIX Ex files. Fiddle with these from RISC OS at your peril!
<H2>Editing the <A NAME="extensions">extensions</A> file</H2>
<P>
The <TT><FONT FACE="Courier">extensions</FONT></TT> file is held
in the <TT><FONT FACE="Courier">files</FONT></TT> subdirectory
of the Internet application, and configures the mapping of RISC
OS file types to UNIX filename extensions. To add your own filename
extensions for specific RISC OS file types you need to edit this
file:
<OL>
<LI>Load Edit onto the icon bar - if it's not already loaded.
<LI>Open the directory display containing the <TT><FONT FACE="Courier">!Internet</FONT></TT>
application - if it's not already open.
<LI>Open the<TT><FONT FACE="Courier"> !Internet</FONT></TT> application
directory by holding down the Shift key while you double-click
on the<TT><FONT FACE="Courier"> !Internet</FONT></TT> icon.
<LI>Open the <TT><FONT FACE="Courier">files</FONT></TT> directory.
<LI>Load it into Edit by dragging its icon to the Edit icon on
the icon bar.
<LI>Add to the file your own mappings of file type to UNIX file
extension.
</OL>
<UL>
<LI>There are two sets of mappings: one for files coming from
RISC OS (starting immediately beneath the `From extensions:' line),
another for files returning to RISC OS (starting immediately beneath
the `To extensions:' line).
<LI>The general syntax is:
</UL>
<P>
<TT><I><FONT /TT> FACE="Courier">RISC_OS_file_type new_extension
[anything]</FONT></I></TT>
<P>
The RISC OS file type can be the name of a file type, or its file
type number in hexadecimal. So to give Data files (type &FFD)
the extension `.dat' you could use either of these lines:
<P>
<TT><FONT FACE="Courier">Data .dat</FONT></TT>
<P>
<TT><FONT FACE="Courier">ffd .dat</FONT></TT>
<UL>
<LI>If you add a third field (`<TT><I><FONT /TT> FACE="Courier">anything</FONT></I></TT> '
above) then the extension becomes `sticky'.
</UL>
<P>
When moving to UNIX the extension is only added if it's not already
present. So if the line were to read:
<P>
<TT><FONT FACE="Courier">ffd .dat sticky</FONT></TT>
<P>
the Data file output would be renamed <TT><FONT FACE="Courier">output.dat</FONT></TT> ,
whereas the Data file <TT><FONT FACE="Courier">output.dat</FONT></TT>
would not be renamed.
<P>
When returning from UNIX the extension doesn't get removed; otherwise
it's handled the same as ever, so the file type gets set using
this extension.
<P>
We expect you'll want the `To extensions:' part to duplicate the
entries in the `From extensions' part, so any extension that gets
added when a file is transferred to UNIX gets removed again if
the file returns to RISC OS. However, there may be a lot of UNIX
extensions that you wish to convert to a single RISC OS file type.
For example, you may have several UNIX applications each of which
generates text files with different extensions - say `.txt', `.doc'
and `-asc'. To do so, just add extra entries to the `To extensions',
thus:
<P>
<TT><FONT FACE="Courier">Text .txt<BR>
Text .doc<BR>
Text -asc</FONT></TT>
<P>
When you've added all the extensions you want to, save the edited
extensions file, overwriting the old one.
<P>
<A HREF="5_Internet"><IMG SRC="pics/PREV.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<A HREF="Front"><IMG SRC="pics/FRONT.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<A HREF="TOC"><IMG SRC="pics/CONTS.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<A HREF="index"><IMG SRC="pics/INDEX.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<A HREF="7_AppxA"><IMG SRC="pics/NEXT.GIF" HEIGHT="28" WIDTH="96" BORDER="0"></A>
<P>
</BODY>
</HTML>